Technical Q&A QA1198
Rendezvous enforces the service type format in Panther


Q: My application uses Rendezvous to advertise a service. Everything works great in Mac OS X 10.2, but in Mac OS X 10.3, my service registration fails with a -65540 error. What am I doing wrong?

A: Starting with Mac OS X 10.3, mDNSResponder enforces the proper format for a Rendezvous service type. A service type must be of the form:

_applicationprotocol._transportprotocol

Currently, "_transportprotocol" must be either "_tcp" or "_udp". The "applicationprotocol" must only contain letters, digits and hyphens, and must begin and end with a letter or digit. As an example, the service type for Hypertext Transport Protocol is "_http._tcp".

IANA restricts the "applicationprotocol" to be 14 characters or less. Although mDNSResponder doesn't enforce this restriction, Apple highly recommends that your "applicationprotocol" be 14 characters or less so it can be registered with IANA or with the DNS-SD Web Site.

If your service type is not formatted correctly, you'll see a message in the system log (/var/log/system.log) similar to Listing 1.



Listing 1. system.log message

Sep 10 19:58:02 ice-cube mDNSResponder[257]:  9987: DNSServiceRegister

("Test","._#$@._tpd.", "", 80) failed: Bad Name (-65540)



Sep 10 19:58:14 ice-cube mDNSResponder[257]: ConstructServiceName: Invalid

service application protocol name: Test..local.



[Mar 19, 2004]


Developer Documentation | Technical Notes | Development Kits | Sample Code